/**
 *
 */
package com.storm.lib.util;


import org.apache.log4j.Logger;

import com.storm.lib.template.SystemTemplate;
import com.storm.lib.type.SystemType;


/**
 * 类功能: 系统工具类
 * @author johnny
 * @version 2010-12-1
 */
public class SystemUtil {
	protected final static Logger logger = Logger.getLogger(SystemUtil.class);
	/**
	 * 方法功能:是否停止
	 * 更新时间:2010-12-1, 作者:johnny
	 * @return
	 */
	public static boolean isStopped() {
		if(SystemTemplate.SERVER_STATUS==SystemType.SERVER_STATUS_STOPPED){
			return true;
		}
		return false;
	}

	/**
	 * 方法功能:停止服务器
	 * 更新时间:2010-12-1, 作者:johnny
	 * @return
	 */
//	public static void stopServer() {
//		MemoryTemplate memoryTemplate = (MemoryTemplate) BeanUtil.getBean("memoryTemplate");
//		memoryTemplate.flushDatasToDB();
//		SystemStatusCache.serverStatue = SystemType.SERVER_STATUS_STOPPED;
//		outter:while(true){
//			for (int i = 0; i < SystemStatusCache.executedTasks.size(); i++) {
//				BaseTask baseTask = SystemStatusCache.executedTasks.get(i);
//				if(baseTask==null){
//					continue;
//				}
//				if(baseTask.isAlive()){
//					logger.debug("干扰线程"+baseTask.getClass().getName());
//					baseTask.interrupt();
//				}
//			}
//			for (int i = 0; i < SystemStatusCache.executedTasks.size(); i++) {
//				BaseTask baseTask = SystemStatusCache.executedTasks.get(i);
//				if(baseTask==null){
//					continue;
//				}
//				if(baseTask.isAlive()){
//					logger.debug("存在未关闭的线程关闭失败,继续尝试");
//					continue outter;
//				}
//			}
//			break;
//		}
//		logger.debug("所有线程已经停止");
//		logger.debug("系统已经成功关闭");
//	}

//	public static void stopAllThread() {
//		outter:while(true){
//			for (int i = 0; i < SystemStatusCache.executedTasks.size(); i++) {
//				BaseTask baseTask = SystemStatusCache.executedTasks.get(i);
//				if(baseTask==null){
//					continue;
//				}
//				if(baseTask.isAlive()){
//					logger.debug("线程"+baseTask.getClass().getName()+"正在运行,等待结束");
//					if(!baseTask.isInterrupted()){
//						baseTask.interrupt();
//					}
//					try {
//						for(int j=0; j<3; j++){
//							logger.debug("等待"+(j+1)+"秒");
//							Thread.sleep(1000);
//						}
//					} catch (InterruptedException e) {
//						ExceptionUtil.processException(e);
//					}
//				}
//
//			}
//			for (int i = 0; i < SystemStatusCache.executedTasks.size(); i++) {
//				BaseTask baseTask = SystemStatusCache.executedTasks.get(i);
//				if(baseTask==null){
//					continue;
//				}
//				if(baseTask.isAlive()){
//					continue outter;
//				}
//			}
//			break;
//		}
//	SystemStatusCache.executedTasks.clear();
//	logger.debug("所有线程执行完毕");
//	}
}
